type token =
  | T_INT of (
# 6 "lib/parser.mly"
        int
# 6 "lib/parser.mli"
)
  | T_ID of (
# 7 "lib/parser.mly"
        string
# 11 "lib/parser.mli"
)
  | T_TY of (
# 8 "lib/parser.mly"
        Ast.ty
# 16 "lib/parser.mli"
)
  | T_UNARY of (
# 9 "lib/parser.mly"
        Ast.unary_op
# 21 "lib/parser.mli"
)
  | T_ADD
  | T_SUB
  | T_MUL
  | T_DIV
  | T_MOD
  | T_LT
  | T_GT
  | T_LE
  | T_GE
  | T_EQ
  | T_NE
  | T_AND
  | T_OR
  | T_LPAREN
  | T_RPAREN
  | T_LBRACE
  | T_RBRACE
  | T_SEMI
  | T_COMMA
  | T_ASSIGN
  | T_IF
  | T_ELSE
  | T_WHILE
  | T_BREAK
  | T_CONTINUE
  | T_RETURN
  | T_EOF

val program :
  (Lexing.lexbuf  -> Ast.token) -> Lexing.lexbuf -> Ast.program
